iT邦幫忙

2026 iThome 鐵人賽

DAY 20
0
佛心分享-IT 人自學之術

It Works on My Machine:30 天從踩雷學會工程事故調查系列 第 20

Day 20|內化:自動工具可以代替手工,不能代替語意驗證

  • 分享至 

  • xImage
  •  

本篇是故事四的「內化」篇。

本篇要回答:不因噎廢食、也不再裸奔——自動修正要怎麼用,才能既省力又不出事?

當時發生了什麼

Day 19 排除了兩種偷懶結論(怪工具、禁工具)之後,剩下的工作是把「人負責語意」這句話落成可執行的檢查表——否則它會退化成另一句「下次注意」。

我原本怎麼判斷

我曾以為自動化的重點是「省掉人工」。修正後的版本是:自動化的重點是把人工移到只有人能做的位置。格式排版、import 排序,機器全權處理;查詢語意、資料契約,機器產出、人來驗收。省力與安全的分界線,就是「這個改動需不需要理解系統語意」。

我怎麼查證或重現

自動修正安全檢查表,每條附驗證方式:

措施 驗證方式
formatter、一般 lint fix、unsafe fix 分成三批獨立執行 各自產生獨立 diff 與 commit,可單獨回退
工具升級時檢查規則變更、先跑預覽 diff 升級 PR 附規則變更摘要與空 diff 證明
自動修正後必須 review diff 才能合併 流程上自動 commit 不得直達主幹
ORM 查詢建立結果導向回歸測試(斷言查詢結果,不只斷言不拋例外) 在測試庫植入已知資料,改壞條件時測試轉紅
語意敏感目錄(ORM、DSL)排除特定規則或整批 unsafe fix 設定檔可查、CI 驗證設定生效
疑難案例比對產生的 SQL 開發環境保留 SQL echo/log 的開關
CI 同時執行 lint、型別檢查與行為測試 三者缺一 CI 即紅
工具版本與設定納入版控 兩台機器跑同一命令產生相同結果

這張表對照 Day 19 的促成因素逐條可回溯:每一項措施都對應至少一個促成因素,沒有孤兒措施,也沒有漏網因素——這是檢查表不淪為儀式的最低標準。

區分證據等級。已確認事實:表中機制皆為現行工具鏈可實作的標準能力。合理推論:全表落地後,同型事故要嘛在 diff review 被攔,要嘛在回歸測試轉紅——兩道獨立防線。執行假設:團隊接受自動修正分批帶來的流程成本。

今天留下什麼方法

第四種失效模式

工具規則通過,不代表領域語意仍然成立。

本篇收尾

把程式碼修得更像標準 Python 很容易;證明它仍然是正確的 ORM 查詢,才是我們不能外包給格式規則的工作。

故事四到此收束。下一個故事(Day 21 起)走進分散式的完成語意:Pub/Sub 都非同步了,你還要我立刻回答指令成功沒?


上一篇
Day 19|理解:工具沒有壞,它只是把通用規則套到不通用的語意
下一篇
Day 21|踩雷:Pub/Sub 都非同步了,你還要我立刻回答成功沒?
系列文
It Works on My Machine:30 天從踩雷學會工程事故調查21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言